/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.eam.clinica.logica.bo;

import co.edu.eam.persitencia.dao.Interfaz.IDAOFuncionario;
import co.edu.eam.persitencia.dao.implementacion.DAOFuncionario;
import co.edu.eam.persitencia.entidades.Especialidad;
import co.edu.eam.persitencia.entidades.Funcionario;
import co.edu.eam.persitencia.entidades.Medico;
import co.edu.eam.persitencia.utilidades.FactoryEntityManager;
import java.util.List;
import javax.persistence.EntityManager;

/**
 *
 * @author Usuario
 */
public class BOFuncionario {
    
     static EntityManager fabrica = FactoryEntityManager.getEm();
    IDAOFuncionario daoFun;
    
    
    public BOFuncionario() {
       daoFun= new DAOFuncionario(fabrica);
}
    
    public void crearFuncionario(Funcionario funcionario) throws Exception{
        if(buscarFuncionario(funcionario.getDocumento())==null){
             
            daoFun.crearFuncionario(funcionario);
            throw  new Exception("El Funcionario Fue Creado Exitosamente");
        }else{
            throw  new Exception("El Funcionario Ya Existe");
        }   
        
    }
    public Funcionario buscarFuncionario(String documento) throws Exception{
         return daoFun.buscarFuncionario(documento);
    }
    
    public void eliminarFuncionario(Funcionario funcionario) throws Exception{
        if(buscarFuncionario(funcionario.getDocumento())==null){
            throw  new Exception("No Existe Ningun Funcionario Con Este Documento");
        }else{
        daoFun.eliminarFuncionario(funcionario);
        throw  new Exception("El Funcionario Fue Eliminado Exitosamente");
    }
        
    }
    
    public void editarFuncionario(Funcionario funcionario) throws Exception{
        if(buscarFuncionario(funcionario.getDocumento())==null){
            throw  new Exception("No Existe Ningun Medico Con Este Documento");
        }else{
        daoFun.editarFuncionario(funcionario);
        throw  new Exception("El Medico Fue Editado Exitosamente");
    }
    }
    
    public void crearMedico(Medico m) throws Exception{
        if(buscarMedico(m.getDocumento())==null){
             
            daoFun.crearMedico(m);
            throw  new Exception("El Medico Fue Creado Exitosamente");
        }else{
            throw  new Exception("El Medico Ya Existe");
        }   
        
    }
    public Medico buscarMedico(String documento) throws Exception{
         return daoFun.buscarMedico(documento);
    }
    
    public void eliminarMedico(Medico m) throws Exception{
        if(buscarMedico(m.getDocumento())==null){
            throw  new Exception("No Existe Ningun Medico Con Este Documento");
        }else{
        daoFun.eliminarMedico(m);
        throw  new Exception("El Medico Fue Eliminado Exitosamente");
    }
        
    }
    
    public void editarMedico(Medico m) throws Exception{
        if(buscarMedico(m.getDocumento())==null){
            throw  new Exception("No Existe Ningun Medico Con Este Documento");
        }else{
        daoFun.editarFuncionario(m);
        throw  new Exception("El Medico Fue Editado Exitosamente");
    }
    }
    
    public void crearEspecialidad(Especialidad especialidad)throws Exception{
        if(buscarEspecialidad(especialidad.getCodigo())==null){
            daoFun.crearEspecialidad(especialidad);
            throw new Exception("La Especialidad A Sido Creada Exitosamente");
        }else{
            throw  new Exception("La especialidad Ya Existe");
        }
    }
    
    public Especialidad buscarEspecialidad(String codigo) throws Exception{
        return daoFun.buscarEspecialidad(codigo);
            }
    
    public void editarEspecialidad( Especialidad e) throws Exception{
        if(buscarEspecialidad(e.getCodigo())==null){
            throw new Exception("NO Existe Ninguna Especialidad Con Este Codigo");
        
    }else{
        daoFun.editarEspecialidad(e);
             throw  new Exception("La Especialidad A Sido Editada");
    
}
    }
    
    public void eliminarEspecialidad(Especialidad e) throws Exception{
        if (buscarEspecialidad(e.getCodigo())==null) {
            throw  new Exception("La Especialidad No A Sido Eliminada Porque No Existe");
                                         
        }else{
            daoFun.eliminarEspecialidad(e);
            throw new Exception("La Especialidad a Sido Eliminada Existosamente");
        }
        
    }
    
    public List<Especialidad> listarEspeciaslidades() throws Exception{
        return daoFun.listarTodasLasEpecialidades();
    }
    
}
